using System;
using System.Threading.Tasks;
using System.Windows.Threading;
using Autofac;
using Phoenix.Diagnostics;
using Phoenix.Framework;
using Phoenix.Storage;

namespace Phoenix.Extensions.Autofac
{
    public class AutofacPhoenixHost : PhoenixHost, IAutofacPhoenixHost
    {
        public AutofacPhoenixHost(
            IPhoenixHostTarget hostTarget,
            IViewLocator viewLocator, 
            IControllerLocator controllerLocator,
            ITransientStore applicationTransientState,
            IErrorReporter errorReporter, 
            IActionInvoker actionInvoker,
#if WINDOWS_PHONE
            Tasks.ITaskManager taskManager,
#endif
            Dispatcher appDispatcher, 
            TaskScheduler appTaskScheduler) : 
                base(hostTarget, viewLocator, controllerLocator, applicationTransientState, errorReporter, actionInvoker,
#if WINDOWS_PHONE
            taskManager,
#endif
            appDispatcher,
            appTaskScheduler)
        {
        }

        public IContainer Container { get; internal set; }
    }
}